#pragma once
#include<vector>
#include<list>

namespace my_queue {
	//template<class T,class Container = list<T>>
	template<class T, class Container = deque<T>>

	class queue
	{
	public:
		void push(const T& val)
		{
			_con.push_back(val);
		}
		void pop()
		{
			_con.pop_front();
		}

		size_t size()
		{
			return _con.size();
		}

		T& front()
		{
			return _con.front();
		}
		T& back()
		{
			return _con.back();
		}
		const T& back()  const
		{
			return _con.back();
		}

		const T& front()  const
		{
			return _con.front();
		}
		bool empty()
		{
			return _con.size();
		}


	private:
		Container _con;   //会调用list的默认构造自己初始化
	};




}


